package utils;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.cfg.Configuration;
import org.hibernate.tool.hbm2ddl.SchemaExport;

public class GeraSqlBd {

	/**
	 * @param args
	 */
	public static void createSchema(Configuration conf, boolean createOnDB) {
		// Cria o arquivo com o SCRIPT do banco
		SchemaExport sch = new SchemaExport(conf);
		sch.setOutputFile("schema_export.sql");
		sch.create(true, createOnDB);
		createStateman(conf, true);
	}
	
	
	public static void createStateman(Configuration conf, boolean createOnDB) {
		try {
			utils.SessionFactory.createSchema(true, true);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	
	}
	

	public static void main(String[] args) {
		// Anotadas são as classes anotadas ué..
		AnnotationConfiguration conf = Anotadas.getAnotadas();

		// Cria o eschema
		createSchema(conf, true);

		// Prepara uma fábrica sessão
		SessionFactory sf = conf.buildSessionFactory();

		// Prepara uma sessão, conexão com o banco
		Session session = sf.openSession();

		// Inicia uma transação
		Transaction t = session.beginTransaction();

		
		// Torna permanente as operações realizadas na sessão até aqui
		t.commit();

		
		
		
		// Fecha a sessão
		session.close();
		
				
		
		
		
	}

}
